/*
 * @Author: LibraStalker 1299640057@qq.com
 * @Date: 2023-01-27 23:44:51
 * @FilePath: index.ts
 * @Description: 入口文件
 */


// 由于face_landmark_localization模型需要abs算子，所以需要导入registerOp
import {registerOp} from '@paddlejs/paddlejs-core';
import {GLHelper} from '@paddlejs/paddlejs-backend-webgl';
import abs from './customOp/abs';
import {FaceDetector} from './modelSDK/facedetector';
import * as interfaces from './commons/interface'

// 注册abs算子供face_landmark_localization模型使用
registerOp(abs, 'abs');
// 这个属性原来是true，会导致在性能差的设备上无法得到WebGL的上下文
GLHelper.WEBGL_ATTRIBUTES.failIfMajorPerformanceCaveat = false;

/**
 * 从图片路径创建图片元素，等待图片加载完成后再resolve，来源于Paddle.js/packages/paddlejs-models/facedetect/src/index.ts
 * @param imgPath 图片的路径，可以是相对路径或网络URL
 * @returns resolve图片元素的Promise
 */
function createImage(imgPath: string): Promise<HTMLImageElement> {
    return new Promise(resolve => {
        const image = new Image();
        image.crossOrigin = 'anonymous';
        image.onload = () => {
            resolve(image);
        };
        image.src = imgPath;
    });
}

export {
    createImage,
    FaceDetector,
    interfaces
}
